home *** CD-ROM | disk | FTP | other *** search
/ IRIX 6.5 Applications 1998 June / SGI IRIX 6.5 Applications 1998 June.iso / dist / insight.idb / usr / sbin / mkversionnum.z / mkversionnum
Text File  |  1998-05-04  |  3KB  |  94 lines

  1. #!/bin/ksh -p
  2. #
  3. #    This program calculates a ten digit version number.
  4. #    The Usage function shows input options including a brief description.
  5. #
  6. typeset -r fullprog=$0
  7. prog=${0%/}
  8. typeset -r prog=${prog##*/}
  9.  
  10. Usage () {
  11.     echo "\nUsage:    $prog -r relnum [-b builder] [-t treeid]"
  12.     echo "    $prog -P patrel -p patnum"
  13.     echo "    $prog -f vnum"
  14.     echo ""
  15.     echo "    -h        Help text (this stuff)."
  16.     echo "    -r relnum    Three digit major release number (no default)."
  17.     echo "    -b builder    Builder digit (default 0)."
  18.     echo "    -t treeid    Tree-id digit (default 0)."
  19.     echo "    -P patrel    Eight digit Patch release number (no default)."
  20.     echo "    -p patnum    Patch number (no default)."
  21.     echo "    -f vnum        Version number (no default)."
  22. }
  23.  
  24. UseExit() {
  25.     [ "$1" ] && echo "$*" >&2
  26.     Usage >&2
  27.     exit 1
  28. }
  29.  
  30. unset relnum patrel patnum builder treeid verbose vnum
  31. while getopts :hr:b:t:P:p:f: flag; do
  32.     case $flag in
  33.     h | \?) Usage; exit ;;
  34.     r)    relnum=$OPTARG ;;
  35.     b)    builder=$OPTARG ;;
  36.     t)    treeid=$OPTARG ;;
  37.     P)    patrel=$OPTARG ;;
  38.     p)    patnum=$OPTARG ;;
  39.     f)    vnum=$OPTARG ;;
  40.     esac
  41. done
  42. shift OPTIND-1
  43. (($#>0)) && UseExit
  44.  
  45. typeset -i numloop=0 i j
  46. if [[ "$vnum" != "" ]]; then
  47.     if  [ "${vnum##[0-9][0-9][0-9][0-9][0-9][0-9][0-9][0-9][0-9][0-9]}" ]; then
  48.         UseExit "Invalid -f version number option ($vnum)"
  49.     else
  50.         version=$vnum
  51.     fi
  52. elif [[ "$patrel" != "" || "$patnum" != "" ]]; then
  53.     if [[ "$patrel" = "" || "$patnum" = "" ]]; then
  54.         UseExit "-P ($patrel) and -p ($patnum) options must be together"
  55.     elif [ "${patrel##[0-9][0-9][0-9][0-9][0-9][0-9][0-9]+([0-9])}" ]; then
  56.         UseExit "Invalid -P patch release option ($patrel)"
  57.     else
  58.         base=${patrel%%${patrel##????????}}
  59.     fi
  60.     if [ "${patnum##*([0-9])[0-9]}" ]; then
  61.         UseExit "Invalid -p patch number option ($patnum)"
  62.     else 
  63.         numloop="(patnum-1)/70"
  64.         i=base+numloop
  65.         j=patnum-70*numloop+29
  66.         if ((j<10)); then
  67.             version="${i}0$j"
  68.         else
  69.             version="$i$j"
  70.         fi
  71.     fi
  72. else
  73.     [  "$relnum" ] || 
  74.         UseExit "You must supply -r major release number option"
  75.     [ "${relnum#[0-9][0-9][0-9]}" ] && 
  76.         UseExit "Invalid -r major release number option ($relnum)"
  77.     i=$relnum
  78.     ((i<101 || i>213)) &&
  79.         UseExit "Out of range major release number option ($relnum)"
  80.     [  "$builder" ] || builder=0
  81.     [ "${builder#[012]}" ] && 
  82.         UseExit "Invalid -b who built option ($builder)"
  83.     [  "$treeid" ] || treeid=0
  84.     [ "${treeid#[0-9]}" ] && 
  85.         UseExit "Invalid -t tree id option ($treeid)"
  86.     TZ=GMT00
  87.     export TZ
  88.     i=$(date +"%H+24*(%j-1+365*(%Y-1993)+(%Y-1993)/4)")
  89.     hours="00000$i"
  90.     hours=${hours##${hours%%?????}}
  91.     version=$relnum$hours$builder$treeid
  92. fi
  93. echo $version
  94.